package shell.command;

import java.util.Set;


/**
 * Contexte d'exécution d'un Shell.
 * 
 * @version 1.0
 */
public interface ShellContext {
    /**
     * Getter de la liste des commandes possibles.
     * 
     * @return La liste des commandes possibles.
     */
    ShellCommand[] getCommands();

    /**
     * Getter d'une variable d'exécution.
     * 
     * @param key
     *            Le nom de la variable
     * @return Le contenu de la variable
     */
    Object getVar(String key);

    /**
     * Suppression d'une variable d'exécution.
     * 
     * @param key
     *            Le nom de la variable
     * @return Le contenu de la variable
     */
    Object unsetVar(String key);

    /**
     * Liste les variables d'exécutions.
     * 
     * @return La liste des variables d'exécutions
     */
    Set<String> getVarNames();

    /**
     * Affecte une nouvelle variable au contexte.
     * 
     * @param key
     *            Le nom de la variable
     * @param value
     *            Le contenu de la variable
     */
    void setVar(String key, Object value);
}
